#include"head.h"


int list_create_(list_t **head,int data)
{
    list_t* pnew=(list_t*)malloc(sizeof(list_t));
    pnew->data=data;
    pnew->next=NULL;
    if(*head==NULL)
    {
        *head=pnew;
        return -1;
    }
    else
    {
        (*head)->next=pnew;
    }
    return 0;
}

int list_add_(list_t **head,int data)
{
    list_t *p=*head;
    list_t *q=NULL;
    if(p==NULL)
    {
        list_create_(head,data);
        return -1;
    }
    while(p)
    {
        q=p;
        p=p->next;
    }
    list_create_(&q,data);


    return 0;
}
int list_delete_(list_t **head,int data)            //删除并释放空间
{
    list_t* p=*head;
    list_t* q=NULL;
    if(*head==NULL)
    {
        printf("未创建列表\n");
        return -1;
    }
    if(memcmp(&(p->data),&data,sizeof(int))==0)      //头节点就是要找到删除的数据
    {
        printf("删除的是头\n");
        *head=p->next;
        free(p);
        return -1;
    }
    while(p)                                            //p最开始是头节点，所以第一遍if成立时q=头节点地址，（如果第二遍if成立，
  //  那么第二个节点就要删除那个节点，而此时q还在上一个指着，所以释放的时q，
    {
        if(memcmp(&(p->data),&data,sizeof(int))==0)
        {
            q->next=p->next;
            printf("DELETE\n");
            free(p);
            return 0;;
        }
        q=p;
        p=p->next;
    }
    return 0;
}

int list_free_(list_t **head)           //释放空间
{
    list_t* p=*head;
    list_t* q=NULL;
    while(p)
    {
        q=p;
        p=p->next;
        free(q);
    }
    *head=NULL;
    return 0;
}

int getmax(list_t **head)
{
    if(*head==NULL)
    return 0;
    list_t *p=(*head)->next;
    int max=(*head)->data;
    while(p)
    {
        if(memcmp(&(p->data),&max,sizeof(int))>0)
        {
            max=p->data;
        }
        p=p->next;
    }
    return max;
}